কাউচডিবি একটি ওপেন-সোর্স NoSQL ডাটাবেস ম্যানেজমেন্ট সিস্টেম, যা ডেটাকে JSON ফরম্যাটে সংরক্ষণ করে এবং HTTP/RESTful API এর মাধ্যমে ডেটা পরিচালনা করে। CouchDB মূলত Apache Software Foundation এর দ্বারা উন্নত করা হয়েছে, এবং এটি দস্তাবেজ ভিত্তিক ডাটাবেস হিসেবে পরিচিত। CouchDB এর বিশেষ বৈশিষ্ট্য হলো এর মাল্টি-মাস্টার রেপ্লিকেশন এবং অফলাইন-অনলাইন ডেটা সিঙ্ক্রোনাইজেশন ক্ষমতা, যা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনগুলির জন্য খুব কার্যকর।
CouchDB হল একটি ওপেন-সোর্স NoSQL ডেটাবেস, যা Apache Software Foundation দ্বারা তৈরি এবং পরিচালিত হয়। এটি ডকুমেন্ট-অরিয়েন্টেড এবং JSON ফরম্যাটে ডেটা সংরক্ষণ করে। CouchDB ডিস্ট্রিবিউটেড ডেটাবেসের জন্য ডিজাইন করা হয়েছে এবং এর মাধ্যমে আপনি ডেটা পুনরুদ্ধার এবং ম্যানেজমেন্ট করতে পারবেন HTTP/REST API এর মাধ্যমে। CouchDB এর অনন্য বৈশিষ্ট্য হল এর MVCC (Multi-Version Concurrency Control) এবং Replication সিস্টেম, যা বড় পরিসরের ডেটাবেস সিস্টেম এবং ডিস্ট্রিবিউটেড ডেটাবেস অ্যাপ্লিকেশনগুলোতে ব্যবহারের জন্য আদর্শ।
CouchDB-এর সবচেয়ে বড় বৈশিষ্ট্যগুলোর মধ্যে একটি হল Eventual Consistency, যা আপনাকে একাধিক সার্ভারের মধ্যে ডেটা সিঙ্ক করতে সহায়তা করে। এটি মূলত অফলাইন-ফার্স্ট অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়, যেখানে ডেটা লোকালি সংরক্ষণ করা যায় এবং পরে সার্ভারের সাথে সিঙ্ক করা হয়।
CouchDB বিভিন্ন প্ল্যাটফর্মে ইন্সটল করা যায়। নিচে Linux, Windows এবং Mac এ CouchDB ইনস্টল করার ধাপগুলো দেওয়া হল:
sudo apt update
sudo apt install couchdb
ইনস্টলেশনের সময় আপনাকে CouchDB-কে Standalone বা Clustered Mode এ কনফিগার করতে বলা হবে। আপনি আপনার প্রয়োজন অনুযায়ী যেকোনো একটি নির্বাচন করতে পারেন।
brew install couchdb
CouchDB ইনস্টল করার পরে, সার্ভার শুরু করতে নিচের কমান্ডটি ব্যবহার করুন (Linux):
sudo systemctl start couchdb
সার্ভার চালু হলে আপনি http://localhost:5984 এ CouchDB এর ওয়েব ইন্টারফেস দেখতে পারবেন।
CouchDB এর মূল ফাইল স্ট্রাকচার নিম্নরূপ:
/etc/couchdb/ # কনফিগারেশন ফাইলসমূহ
/var/lib/couchdb/ # ডেটাবেস ফাইলসমূহ
/var/log/couchdb/ # লগ ফাইলসমূহ
/var/run/couchdb/ # রানটাইম ফাইলসমূহ
CouchDB এর কনফিগারেশন ফাইলগুলো YAML বা INI ফরম্যাটে থাকে এবং সেগুলো /etc/couchdb
ডিরেক্টরিতে পাওয়া যায়।
CouchDB এর Fauxton Web Interface ব্যবহার করে আপনি সহজেই ডেটাবেস তৈরি করতে পারেন। এছাড়াও, REST API ব্যবহার করে ডেটাবেস তৈরি করা যায়।
curl -X PUT http://localhost:5984/my_database
উপরের কমান্ডটি my_database নামে একটি নতুন ডেটাবেস তৈরি করবে।
CouchDB মূলত ডকুমেন্ট-অরিয়েন্টেড ডেটাবেস, তাই ডকুমেন্টগুলি JSON ফরম্যাটে সংরক্ষণ করা হয়। এখানে ডকুমেন্ট তৈরি, আপডেট, এবং ডিলিট করার উদাহরণ দেওয়া হল।
curl -X POST http://localhost:5984/my_database \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"age": 30,
"email": "john@example.com"
}'
curl -X PUT http://localhost:5984/my_database/document_id \
-H "Content-Type: application/json" \
-d '{
"_rev": "2-9c65296036141e575d32ba9c034dd3ee",
"name": "John Doe",
"age": 31,
"email": "john_updated@example.com"
}'
curl -X DELETE http://localhost:5984/my_database/document_id?rev=2-9c65296036141e575d32ba9c034dd3ee
curl -X GET http://localhost:5984/my_database/document_id
CouchDB এ MapReduce পদ্ধতির মাধ্যমে জটিল কুয়েরি চালানো যায়। এখানে একটি সহজ উদাহরণ দেওয়া হল:
function(doc) {
if (doc.type == "user") {
emit(doc.name, doc.age);
}
}
উপরের ফাংশনটি এমন সমস্ত ডকুমেন্ট থেকে name এবং age রিটার্ন করবে, যেখানে type
হল "user"।
function(keys, values, rereduce) {
return sum(values);
}
এটি ডকুমেন্টের সমস্ত ভ্যালু যোগ করে রিটার্ন করবে।
CouchDB এর Replication ফিচারটি ডেটা সিঙ্ক করার জন্য ব্যবহৃত হয়। আপনি একটি CouchDB সার্ভার থেকে আরেকটি সার্ভারে ডেটা সিঙ্ক করতে পারেন।
curl -X POST http://localhost:5984/_replicate \
-H "Content-Type: application/json" \
-d '{
"source": "http://localhost:5984/my_database",
"target": "http://another_server:5984/my_database"
}'
এটি localhost থেকে অন্য একটি CouchDB সার্ভারে ডেটা রেপ্লিকেট করবে।
CouchDB একটি ডকুমেন্ট-ভিত্তিক NoSQL ডেটাবেস যা REST API এবং JSON ডকুমেন্ট ব্যবহারের জন্য পরিচিত। এর বৈশিষ্ট্য ও ক্ষমতাকে আরও ভালোভাবে বোঝার জন্য, CouchDB-এর তুলনা অন্যান্য জনপ্রিয় NoSQL ডেটাবেসগুলোর সাথে করা যাক, যেমন MongoDB, Cassandra, এবং Couchbase।
MongoDB একটি ডকুমেন্ট-ভিত্তিক NoSQL ডেটাবেস, যা JSON-এর মতো BSON ফরম্যাটে ডেটা সংরক্ষণ করে এবং স্কেলিং এবং হাই-অ্যাভেলেবিলিটির জন্য জনপ্রিয়।
বৈশিষ্ট্য | CouchDB | MongoDB |
---|---|---|
ডেটা মডেল | JSON ডকুমেন্ট | BSON ডকুমেন্ট |
কনসিস্টেন্সি মডেল | Eventual Consistency | Strong Consistency (ডিফল্ট) |
API | REST API | MongoDB Query Language (MQL) |
রেপ্লিকেশন | বিল্ট-ইন রেপ্লিকেশন সাপোর্ট | Master-Slave এবং Replica Set |
অফলাইন ফার্স্ট | CouchDB অফলাইন অ্যাপ্লিকেশনের জন্য আদর্শ | MongoDB অফলাইন সাপোর্ট সীমিত |
ইন্ডেক্সিং | MapReduce ভিত্তিক | সম্পূর্ণ ইনডেক্স সাপোর্ট |
স্কেলিং | সীমিত হরাইজন্টাল স্কেলিং | উন্নত হরাইজন্টাল স্কেলিং (Sharding) |
কনকারেন্সি কন্ট্রোল | MVCC (Multi-Version Concurrency Control) | লক-ভিত্তিক কনকারেন্সি কন্ট্রোল |
MongoDB বড় ডেটাসেটের জন্য আরও উপযুক্ত, বিশেষত যেখানে অন-ডিমান্ড স্কেলিং প্রয়োজন। CouchDB মূলত অফলাইন-ফার্স্ট এবং ডিসকনেক্টেড সিস্টেমের জন্য উপযুক্ত।
Cassandra একটি ডিস্ট্রিবিউটেড NoSQL ডেটাবেস, যা কী-ভ্যালু এবং কলাম-ভিত্তিক ডেটা মডেলের জন্য পরিচিত। এটি স্কেলিং এবং দ্রুত রাইট অপারেশনের জন্য জনপ্রিয়।
বৈশিষ্ট্য | CouchDB | Cassandra |
---|---|---|
ডেটা মডেল | JSON ডকুমেন্ট | কী-ভ্যালু এবং কলাম-ভিত্তিক |
কনসিস্টেন্সি মডেল | Eventual Consistency | Tunable Consistency |
রেপ্লিকেশন | বিল্ট-ইন সিঙ্ক রেপ্লিকেশন | Multi-datacenter রেপ্লিকেশন |
অফলাইন ফার্স্ট | হ্যাঁ | না |
লিখন অপারেশন | ধীর | খুব দ্রুত |
কুয়েরি ল্যাঙ্গুয়েজ | MapReduce ভিত্তিক | CQL (Cassandra Query Language) |
স্কেলিং | সীমিত হরাইজন্টাল স্কেলিং | অত্যন্ত উন্নত হরাইজন্টাল স্কেলিং |
কনকারেন্সি কন্ট্রোল | MVCC | লক-ফ্রি কনকারেন্সি কন্ট্রোল |
Cassandra বড় স্কেল ডিস্ট্রিবিউটেড ডেটাবেসের জন্য উপযুক্ত, যেখানে সিলিন্ডার লিখন এবং হরাইজন্টাল স্কেলিং গুরুত্বপূর্ণ। CouchDB ছোট ও মাঝারি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনের জন্য উপযোগী, বিশেষত যেখানে অফলাইন সাপোর্ট প্রয়োজন।
Couchbase একটি NoSQL ডেটাবেস, যা ডকুমেন্ট এবং কী-ভ্যালু স্টোরেজের জন্য ব্যবহৃত হয়। এটি CouchDB থেকে উদ্ভূত হলেও Couchbase এর উন্নত পারফরম্যান্স এবং স্কেলিং সাপোর্ট রয়েছে।
বৈশিষ্ট্য | CouchDB | Couchbase |
---|---|---|
ডেটা মডেল | JSON ডকুমেন্ট | JSON ডকুমেন্ট এবং কী-ভ্যালু স্টোরেজ |
কনসিস্টেন্সি মডেল | Eventual Consistency | Strong এবং Eventual Consistency |
রেপ্লিকেশন | বিল্ট-ইন সিঙ্ক রেপ্লিকেশন | উন্নত ক্লাস্টার রেপ্লিকেশন |
অফলাইন ফার্স্ট | হ্যাঁ | সীমিত |
কুয়েরি ল্যাঙ্গুয়েজ | MapReduce ভিত্তিক | N1QL (SQL-এর মতো ডকুমেন্ট কুয়েরি) |
স্কেলিং | সীমিত হরাইজন্টাল স্কেলিং | উন্নত স্কেলিং সাপোর্ট |
ইন্ডেক্সিং | সীমিত | শক্তিশালী ইনডেক্সিং সাপোর্ট |
Couchbase বড় অ্যাপ্লিকেশনগুলোর জন্য উপযুক্ত যেখানে উন্নত পারফরম্যান্স এবং স্কেলিং প্রয়োজন। CouchDB মূলত অফলাইন ফার্স্ট অ্যাপ্লিকেশন এবং ছোট স্কেল ব্যবহারের জন্য উপযোগী।
CouchDB একটি ফ্লেক্সিবল, JSON-ভিত্তিক ডকুমেন্ট স্টোরেজ সমাধান, যা ছোট স্কেল এবং অফলাইন-ফার্স্ট অ্যাপ্লিকেশনগুলোর জন্য উপযুক্ত।
ডেভেলপারদের প্রকল্পের প্রয়োজন অনুযায়ী উপযুক্ত ডেটাবেস বেছে নেওয়া উচিত।